每當玩家中斷連線時,必須將該玩家的 Slot 清除,以便下個玩家做連線時可以使用該 Slot。伺服器跟失去連線的客戶端要把 TCP/UDP 的Socket 關閉,並清除 stream、Buffer 及遊戲的資料,伺服器在清除遊戲資料時須將執行的 Action 放在 Main Thread 上去執行,以免發生問題,在失去連線的客戶端上也要正確的關閉 TCP Listener 及 UDP Client,伺服器也要發送斷線通知給各個在線玩家,使各個連線中的 Client 也對該名玩家的資料去做移除。
private void Disconnect()
{
instance.Disconnect();
stream = null;
receivedData = null;
receiveBuffer = null;
socket = null;
}
private void Disconnect()
{
if (isConnected)
{
isConnected = false;
tcp.socket.Close();
udp.socket.Close();
Debug.Log("Disconnected from server.");
}
}
private void Disconnect()
{
instance.Disconnect();
endPoint = null;
socket = null;
}